home *** CD-ROM | disk | FTP | other *** search
/ Precision Software Appli…tions Silver Collection 1 / Precision Software Applications Silver Collection Volume One (PSM) (1993).iso / windows / games / xlmath21.arj / SOURCE.ZIP / XLMATH.H < prev    next >
C/C++ Source or Header  |  1993-04-09  |  16KB  |  469 lines

  1. /*******************************************************************
  2.        XLMATH.H
  3.        =========
  4.      Header file for XLMATH.DLL
  5.     -- Set TABS to 4 to view --
  6.  *******************************************************************/
  7.  
  8. #ifndef _INC_XLMATH
  9.  
  10. #ifdef _USE_SMARTHEAP
  11. #include <smrtheap.h>
  12. #else
  13. #include "xlmalloc.h"    
  14. #endif
  15.  
  16.  
  17. #define MAX_ERROR_STRING 96    // maximum no. char in error messages
  18.  
  19. typedef enum                // error message id codes
  20. {
  21.     XLU_NO_MEMORY,
  22.     XLU_MEMORY_ERROR,
  23.     XLU_NO_FREE,
  24.     XLU_NO_ACTIVESHEET,
  25.     XLU_BAD_REF,
  26.     XLU_OVERLAPPED_REF,
  27.     XLU_NO_ARRAY,
  28.     XLD_BAD_DIALOG,
  29.     XLM_NOT_SQUARE,
  30.     XLM_POLY,
  31.     XLM_SMOOTHSG,
  32.     XLM_SMOOTHWT,
  33.     XLM_CUBIC,
  34.     XLM_CALCSPLINE,
  35.     XLM_MODENSITY,
  36.     XLM_CF1,
  37.     XLM_CF2,
  38.     XLM_CF3,
  39.     XLM_CF4,
  40.     XLM_CF5,
  41.     XLM_CF6,
  42.     XLM_CF7,
  43.     XLM_CF8,
  44. } XLM_ERROR;
  45.  
  46. /* --------------------<Menu & dialog defines >--------------------- */
  47.  
  48. #define rgFuncsRows         17
  49. #define rgMenuRows            17
  50. #define rgDlgDiagRows        8
  51. #define rgDlgMORows            11
  52. #define rgPolyDlgRows        13
  53. #define rgSplineDlgRows        11
  54. #define rgWtSmoothDlgRows    11
  55. #define rgCustomFitDlgRows    11
  56. #define rgSgSmoothDlgRows    13
  57. #define rgCalcSplineDlgRows    13
  58. #define rgDlgAboutRows        8
  59.  
  60. // the following define the dialog box row for default values
  61. #define    DIAG_IN_ROW                2
  62. #define DIAG_OUT_ROW            4
  63. #define    MO_COEF_ROW                3
  64. #define MO_OCC_ROW                5
  65. #define    MO_OUT_ROW                7
  66. #define POLY_XVAR_ROW            3
  67. #define    POLY_YVAR_ROW            5
  68. #define POLY_ORDER_ROW            7
  69. #define POLY_OUT_ROW            9
  70. #define SPLINE_XVAR_ROW            3
  71. #define SPLINE_YVAR_ROW         5
  72. #define SPLINE_OUT_ROW            7
  73. #define WTSMOOTH_DATA_ROW        3
  74. #define WTSMOOTH_WEIGHT_ROW        5
  75. #define WTSMOOTH_OUT_ROW        7
  76. #define CFIT_DATA_ROW            3
  77. #define CFIT_PARM_ROW            5
  78. #define CFIT_OUT_ROW            7
  79. #define SGSMOOTH_DATA_ROW        3
  80. #define SGSMOOTH_SMOOTHNUM_ROW    5
  81. #define SGSMOOTH_DERIVNUM_ROW    7
  82. #define SGSMOOTH_OUT_ROW        9
  83. #define CALCSPLINE_XORIG_ROW    3
  84. #define CALCSPLINE_XCALC_ROW    7
  85. #define CALCSPLINE_COEF_ROW        5
  86. #define CALCSPLINE_OUT_ROW        9
  87.  
  88. /* -----------------<Type & structure definitions >--------------------- */
  89.  
  90. typedef double                *NPREAL;
  91. typedef double     FAR         *LPREAL;
  92. typedef double     FAR * FAR    *LPLPREAL;
  93. typedef int     FAR * FAR    *LPLPINT;
  94. typedef void     FAR * FAR    *LPLPVOID;
  95. typedef LPSTR     FAR            *LPLPSTR;
  96.  
  97. /*----------------------------------------------------------------------*\
  98.  
  99.                     typedef's
  100.  
  101.     The MULTI struture below differs from the Excel xltype Multi
  102.     in that MULTI allocates memory for both the info structure
  103.     and the array. This makes it much easier to free memory in
  104.     xlAutoFree.
  105.     
  106. \*----------------------------------------------------------------------*/
  107.  
  108. typedef struct multi        // XL Multi array
  109. {
  110.     XLOPER    Info;            // XLOPER containing pointer to data
  111.     XLOPER    Data[1];        // matrix of XLOPER's containing data
  112. } MULTI;
  113. typedef        MULTI FAR        *LPMULTI;
  114.  
  115. typedef struct fp            // XL floating point array
  116. {
  117.     WORD wRows;                // no rows
  118.     WORD wCols;                // no columns
  119.     double Data[1];            // array data
  120. } FP;
  121. typedef        FP FAR            *LPFP;
  122.  
  123.  
  124. /* -----------------------< global variables >--------------------- */
  125.  
  126. #ifdef ININIT
  127.  
  128. HANDLE ghLibInst;
  129.  
  130. // SMARTHEAP memory pools
  131. MEM_POOL gReturnPool = NULL;
  132. MEM_POOL gScratchPool = NULL;
  133.  
  134. // used to return xltypeNum
  135. XLOPER gxlNum =
  136. {
  137.     (double) 0.0,
  138.     xltypeNum,
  139. };
  140. LPXLOPER glpxlNum = (LPXLOPER)&gxlNum;
  141.  
  142. // used for ERROR returns
  143. XLOPER gxlError;
  144. LPXLOPER glpxlError = (LPXLOPER)&gxlError;
  145. char gszErrorBuf[MAX_ERROR_STRING];
  146.  
  147. // sheet ID
  148. XLOPER gxActiveSheetName, gxActiveSheetId;
  149. char gszActiveSheetName[80];
  150.  
  151. // global input & output references: inited in init.c
  152. XLMREF     gxlmOutRef;
  153. XLOPER     gxOutRef;    // init to point to gxlmOutRef
  154. XLMREF    gxlmInRef;
  155. XLOPER     gxInRef;    // init to point to gxlmInRef
  156.  
  157. /*****************************************************
  158.  *
  159.  * These must be changed for each new XLL module
  160.  *
  161.  *****************************************************/
  162.  
  163. char gszLibName[] = "XLMATH.XLL";
  164. char gspShortLibName[] = "\006XLMATH";
  165. char gspLongLibName[] = "\025Xlmath Standalone DLL";
  166. char gspHelpId[] = "\016XLMATH.HLP!101";
  167. XLOPER gxHelpRef;
  168. LPXLOPER gpxHelpRef = (LPXLOPER)&gxHelpRef;
  169.  
  170. // CustomFit communications with macro
  171. LPMULTI lpMultiCfit;    // return p to macro
  172. XLOPER xMacroRef;        // reference to CustomFitMacro
  173. char gspCFitMacroName[] = "\017!CustomFitMacro";    // CustomFitMacro name
  174.  
  175.  
  176. /* -----------------------< Function registration >--------------------- */
  177.  
  178.  
  179. LPSTR rgFuncs[rgFuncsRows][7] =
  180. {
  181. {" CalcSpline",       " RKKK", " CalcSpline",  " Xorig,Coef,Xcalc",
  182.     " 1", " XLMath Add-In", " "},
  183. {" Diagonalize",  " RK",    " Diagonalize",    " SymMat",
  184.     " 1", " XLMath Add-In",    " "},
  185. {" MODensity",        " RKK", " MODensity",   " Coefficients, Occupancy",
  186.     " 1", " XLMath Add-In", " "},
  187. {" PolyCurveFit", " RKKH", " PolyCurvefit",    " Xvar,Yvar,Order",
  188.     " 1", " XLMath Add-In", " "},
  189. {" CubicSplines", " RKK",  " CubicSplines",    " Xvar,Yvar",
  190.     " 1", " XLMath Add-In", " "},
  191. {" SmoothSG",     " RKHH", " SmoothSG",     " Data,SmoothNum,DerivNum",
  192.     " 1", " XLMath Add-In", " "},
  193. {" SmoothWeights"," RKK", " SmoothWt",         " Data,Weights",
  194.     " 1", " XLMath Add-In", " "},
  195.  
  196. // NOTE:    CustomFit cannot be defined as a custom function
  197. //            because it uses macro sheet only commands. It is
  198. //            in effect, a custom command rather than a function.
  199. //    {" CustomFit",      " RKK", " CustomFit",        " Data,Parameters",
  200. //        " 1", " XLMath Add-In", " "},
  201.  
  202. {" fDiagonalize",    " A", " fDiagonalize",    " ",    " 2", " XLMath Add-In", " "},
  203. {" fMODensity",        " A", " fMODensity",    " ",    " 2", " XLMath Add-In",    " "},
  204. {" fPolyCurveFit",    " A", " fPolyCurvefit",    " ",    " 2", " XLMath Add-In", " "},
  205. {" fCubicSplines",    " A", " fCubicSplines",    " ",    " 2", " XLMath Add-In", " "},
  206. {" fSmoothSg",        " A", " fSmoothSg",     " ",    " 2", " XLMath Add-In", " "},
  207. {" fSmoothWt",        " A", " fSmoothWt",     " ",    " 2", " XLMath Add-In", " "},
  208. {" fCalcSpline",    " A", " fCalcSpline",    " ",    " 2", " XLMATH Add-In", " "},
  209. {" fCustomFit",        " A", " fCustomFit",    " ",    " 2", " XLMATH Add-In", " "},
  210. {" fExit",            " A", " fExit",            " ",    " 2", " XLMath Add-In",    " "},
  211. {" fAbout",            " A", " fAbout",        " ",    " 2", " XLMATH Add-In",    " "},
  212. };
  213.  
  214. /* -----------------------< Menu Definitions >--------------------- */
  215.  
  216. LPSTR rgMenu[rgMenuRows][5] =
  217. {
  218. {" &Xlmath",            " ",                " ",
  219.     " The Xlmath Add-in",                        " XLMATH.HLP!100"},
  220. {" &PolyCurveFit...",    " fPolyCurveFit",    " ",
  221.     " n'th order polynomial fitting",             " XLMATH.HLP!100"},
  222. {" -",                    " ",                " ",
  223.     " ",                                        " "},    
  224. {" &CubicSplines...",    " fCubicSplines",    " ",
  225.     " Calculate spline function coefficients",    " XLMATH.HLP!100"},
  226. {" C&alcSpline...",    " fCalcSpline",    " ",
  227.     " Calculate cubic spline interpolated Y values",    " XLMATH.HLP!100"},
  228. {" -",                    " ",                " ",
  229.     " ",                                        " "},    
  230. {" Smooth&Wt...",        " fSmoothWt",            " ",
  231.     " Weights smoothing of data",                " XLMATH.HLP!100"},
  232. {" Smooth&SG...",        " fSmoothSg",            " ",
  233.     " Savitsky-Golay smoothing of data",        " XLMATH.HLP!100"},
  234. {" -",                    " ",                " ",
  235.     " ",                                        " "},    
  236. {" Custom&Fit...",        " fCustomFit",            " ",
  237.     " Marquardt fitting",                        " XLMATH.HLP!100"},
  238. {" -",                    " ",                " ",
  239.     " ",                                        " "},    
  240. {" &Diagonalize...",    " fDiagonalize",        " ",
  241.     " Diagonalize real-symmetric matrix",         " XLMATH.HLP!100"},
  242. {" &MODensity...",        " fMODensity",            " ",
  243.     " Calculate charges & bond orders",            " XLMATH.HLP!100"},
  244. {" -",                    " ",                " ",
  245.     " ",                                        " "},    
  246. {" E&xit",                " fExit",                " ",
  247.     " Remove Xlmath-add-in",                    " XLMATH.HLP!100"},
  248. {" -",                    " ",                " ",
  249.     " ",                                        " "},    
  250. {" A&bout...",            " fAbout",                " ",
  251.     " About Xlmath Add-In",                        " XLMATH.HLP!100"},
  252. };
  253.  
  254.  
  255. /* ---------------------< Dialog box definitions >--------------------- */
  256.  
  257. LPSTR rgDlgDiag[rgDlgDiagRows][7] =
  258. {
  259. {" XLMATH.HLP!1",    " "," ",    " 380",    " 110",    " Diagonalize",        " "},
  260. {" 5",    " 15",     " 15",    " ",    " ",    " &Input range",    " "},
  261. {" 10",    " 185",    " 10",    " 160",    " ",    " ",                " "},
  262. {" 5",    " 15",    " 45",    " ",    " ",    " &Output range",    " "},
  263. {" 10",    " 185",    " 40",    " 160",    " ",    " ",                " "},
  264. {" 1",    " 15",    " 75",     " 88",    " ",    " OK",                " "},
  265. {" 2",    " 135",    " 75",    " 88",    " ",    " Cancel",            " "},
  266. {" 24",    " 260",    " 75",    " 88",    " ",    " Help",            " "},
  267. };
  268.  
  269. LPSTR rgDlgMO[rgDlgMORows][7] =
  270. {
  271. {" XLMATH.HLP!6",    " "," ",    " 350",    " 180",    " MO Density",        " "},
  272. {" 14",    " 15",    " 15",    " 300",    " 80",    " Input",            " "},
  273. {" 5",    " 25",    " 35",    " ",    " ",    " &Coefs range",    " "},
  274. {" 10",    " 135",    " 30",    " 160",    " ",    " ",                " "},
  275. {" 5",    " 25",    " 65",    " ",    " ",    " O&cc range",        " "},
  276. {" 10",    " 135",    " 60",    " 160",    " ",    " ",                " "},
  277. {" 5",    " 25",    " 105",    " ",    " ",    " &Output range",            " "},
  278. {" 10",    " 135",    " 100",    " 160",    " ",    " ",                " "},
  279. {" 1",    " 15",    " 140",    " 88",    " ",    " OK",                " "},
  280. {" 2",    " 125",    " 140",    " 88",    " ",    " Cancel",            " "},
  281. {" 24",    " 240",    " 140",    " 88",    " ",    " Help",            " "},
  282. };
  283.  
  284.  
  285. LPSTR rgDlgPoly[rgPolyDlgRows][7] =
  286. {
  287. {" XLMATH.HLP!2",    " "," ",    " 380",    " 180",    " Polynomial Fit",     " "},
  288. {" 14",    " 15",    " 15",    " 350",    " 100",    " &Input",            " "},
  289. {" 5",    " 25",    " 35",    " ",    " ",    " &Xvar range",        " "},
  290. {" 10",    " 185",    " 30",    " 160",    " ",    " ",                " "},
  291. {" 5",    " 25",    " 65",    " ",    " ",    " &Yvar range",        " "},
  292. {" 10",    " 185",    " 60",    " 160",    " ",    " ",                " "},
  293. {" 5",    " 25",    " 95",    " ",    " ",    " O&rder",             " "},
  294. {" 7",    " 185", " 90",    " 40",    " ",    " ",                " 2"},
  295. {" 5",    " 25",    " 130",    " ",    " ",    " &Output range",    " "},
  296. {" 10",    " 185",    " 125",    " 160",    " ",    " ",                " "},
  297. {" 1",    " 30",    " 155",    " 88",    " ",    " OK",                " "},
  298. {" 2",    " 150",    " 155",    " 88",    " ",    " Cancel",            " "},
  299. {" 24",    " 270",    " 155",    " 88",    " ",    " Help",            " "},
  300. };
  301.  
  302. LPSTR rgDlgSpline[rgSplineDlgRows][7] =
  303. {
  304. {" XLMATH.HLP!3",    " "," ",    " 350",    " 180",    " Spline Fitting",        " "},
  305. {" 14",    " 15",    " 15",    " 300",    " 75",    " Input",            " "},
  306. {" 5",    " 25",    " 35",    " ",    " ",    " &Xvar range",        " "},
  307. {" 10",    " 135",    " 30",    " 160",    " ",    " ",                " "},
  308. {" 5",    " 25",    " 65",    " ",    " ",    " &Yvar range",        " "},
  309. {" 10",    " 135",    " 60",    " 160",    " ",    " ",                " "},
  310. {" 5",    " 25",    " 110",    " ",    " ",    " &Output range",    " "},
  311. {" 10",    " 135",    " 105",    " 160",    " ",    " ",                " "},
  312. {" 1",    " 15",    " 140",    " 88",    " ",    " OK",                " "},
  313. {" 2",    " 125",    " 140",    " 88",    " ",    " Cancel",            " "},
  314. {" 24",    " 240",    " 140",    " 88",    " ",    " Help",            " "},
  315. };
  316.  
  317. LPSTR rgDlgWtSmooth[rgWtSmoothDlgRows][7] =
  318. {
  319. {" XLMATH.HLP!5",    " ",    " ",    " 380",    " 180",    " Wts Smoothing",    " "},
  320. {" 14",    " 15",    " 15",    " 350",    " 80",    " Input",            " "},
  321. {" 5",    " 25",    " 35",    " ",    " ",    " &Data range",        " "},
  322. {" 10",    " 185",    " 30",    " 160",    " ",    " ",                " "},
  323. {" 5",    " 25",    " 65",    " ",    " ",    " &Weights range",        " "},
  324. {" 10",    " 185",    " 60",    " 160",    " ",    " ",                " "},
  325. {" 5",    " 25",    " 110",    " ",    " ",    " &Output range",            " "},
  326. {" 10",    " 185",    " 105",    " 160",    " ",    " ",                " "},
  327. {" 1",    " 25",    " 140",    " 88",    " ",    " OK",                " "},
  328. {" 2",    " 145",    " 140",    " 88",    " ",    " Cancel",            " "},
  329. {" 24",    " 270",    " 140",    " 88",    " ",    " Help",            " "},
  330. };
  331.  
  332. LPSTR rgDlgCustomFit[rgCustomFitDlgRows][7] =
  333. {
  334. {" XLMATH.HLP!8",    " ",    " ",    " 380",    " 180",    " Custom Fitting",    " "},
  335. {" 14",    " 15",    " 15",    " 350",    " 80",    " Input",            " "},
  336. {" 5",    " 25",    " 35",    " ",    " ",    " &Data range",        " "},
  337. {" 10",    " 185",    " 30",    " 160",    " ",    " ",                " "},
  338. {" 5",    " 25",    " 65",    " ",    " ",    " &Parameters range",        " "},
  339. {" 10",    " 185",    " 60",    " 160",    " ",    " ",                " "},
  340. {" 5",    " 25",    " 110",    " ",    " ",    " &Output range",            " "},
  341. {" 10",    " 185",    " 105",    " 160",    " ",    " ",                " "},
  342. {" 1",    " 25",    " 140",    " 88",    " ",    " OK",                " "},
  343. {" 2",    " 145",    " 140",    " 88",    " ",    " Cancel",            " "},
  344. {" 24",    " 270",    " 140",    " 88",    " ",    " Help",            " "},
  345. };
  346.  
  347. LPSTR rgDlgSgSmooth[rgSgSmoothDlgRows][7] =
  348. {
  349. {" XLMATH.HLP!4",    " "," ",    " 380",    " 210",    " S-G Smoothing",    " "},
  350. {" 14",    " 15",    " 15",    " 350",    " 100",    " Input",            " "},
  351. {" 5",    " 25",    " 35",    " ",    " ",    " &Data range",            " "},
  352. {" 10",    " 185",    " 30",    " 160",    " ",    " ",                " "},
  353. {" 5",    " 25",    " 65",    " ",    " ",    " &SmoothNum",        " "},
  354. {" 7",    " 185",    " 60",    " 40",    " ",    " ",                " 2"},
  355. {" 5",    " 25",    " 95",    " ",    " ",    " &DerivNum",        " "},
  356. {" 7",    " 185",    " 90",    " 40",    " ",    " ",                " 0"},
  357. {" 5",    " 25",    " 130",    " ",    " ",    " &Output range",            " "},
  358. {" 10",    " 185",    " 125",    " 160",    " ",    " ",                " "},
  359. {" 1",    " 25",    " 170",    " 88",    " ",    " OK",                " "},
  360. {" 2",    " 145",    " 170",    " 88",    " ",    " Cancel",            " "},
  361. {" 24",    " 270",    " 170",    " 88",    " ",    " Help",            " "},
  362. };
  363.  
  364. LPSTR rgDlgCalcSpline[rgCalcSplineDlgRows][7] =
  365. {
  366. {" XLMATH.HLP!7",    " "," ",    " 380",    " 210",    " CalcSpline", " "},
  367. {" 14",    " 15",    " 15",    " 350",    " 100",    " Input",             " "},
  368. {" 5",    " 25",    " 35",    " ",    " ",    " &Fitted X range",    " "},
  369. {" 10",    " 185",    " 30",    " 160",    " ",    " ",                " "},
  370. {" 5",    " 25",    " 65",    " ",    " ",    " &Coef range",     " "},
  371. {" 10",    " 185",    " 60",    " 160",    " ",    " ",                " "},
  372. {" 5",    " 25",    " 95",    " ",    " ",    " &Interpolated X range"," "},
  373. {" 10",    " 185",    " 90",    " ",    " ",    " ",                " "},
  374. {" 5",    " 25",    " 130",    " ",    " ",    " &Output range",    " "},
  375. {" 10",    " 185",    " 125",    " 160",    " ",    " ",                " "},
  376. {" 1",    " 25",    " 170",    " 88",    " ",    " OK",                " "},
  377. {" 2",    " 145",    " 170",    " 88",    " ",    " Cancel",            " "},
  378. {" 24",    " 270",    " 170",    " 88",    " ",    " Help",            " "},
  379. };
  380.  
  381. LPSTR rgDlgAbout[rgDlgAboutRows][7] =
  382. {
  383. {" ",    " ",    " ",    " 300",    " 145",    " About Xlmath",                " "},
  384. {" 5",    " 5",    " 15",    " ",    " ",    " Author: Roy Kari",            " "},
  385. {" 5",    " 5",    " 30",    " ",    " ",    " Copyright 1992, v2.0",        " "},
  386. {" 5",    " 5",    " 45",    " ",    " ",    " For Support Call:",            " "},
  387. {" 5",    " 5",    " 60",    " ",    " ",    " voice: (705)692-4059",        " "},
  388. {" 5",    " 5",    " 75",    " ",    " ",    " fax:   (705)675-4844",        " "},
  389. {" 5",    " 5",    " 90",    " ",    " ",    " Internet: ROY@NICKEL.LAURENTIAN.CA",    " "},
  390. {" 1",    " 105",    " 113",    " 75",    " ",    " OK",                            " "},
  391. };
  392.  
  393. #endif
  394.  
  395. #ifndef ININIT
  396.  
  397. /*----------------------------------------------------------------------*\
  398.                 ININIT defined only in XLMINIT.C
  399. \*----------------------------------------------------------------------*/
  400.  
  401. extern HANDLE ghLibInst;
  402.  
  403. extern MEM_POOL gReturnPool;
  404. extern MEM_POOL gScratchPool;
  405.  
  406. extern XLOPER gxlNum;
  407. extern LPXLOPER glpxlNum;
  408. extern XLOPER gxlError;
  409. extern LPXLOPER glpxlError;
  410.  
  411. extern LPSTR rgFuncs[rgFuncsRows][7];
  412. extern LPSTR rgMenu[rgMenuRows][5];
  413. extern LPSTR rgDlgDiag[rgDlgDiagRows][7];
  414. extern LPSTR rgDlgMO[rgDlgMORows][7];
  415. extern LPSTR rgDlgPoly[rgPolyDlgRows][7];
  416. extern LPSTR rgDlgSpline[rgSplineDlgRows][7];
  417. extern LPSTR rgDlgWtSmooth[rgWtSmoothDlgRows][7];
  418. extern LPSTR rgDlgCustomFit[rgCustomFitDlgRows][7];
  419. extern LPSTR rgDlgSgSmooth[rgSgSmoothDlgRows][7];
  420. extern LPSTR rgDlgCalcSpline[rgCalcSplineDlgRows][7];
  421. extern LPSTR rgDlgAbout[][7];
  422.  
  423. // sheet ID
  424. extern XLOPER gxActiveSheetName, gxActiveSheetId;
  425. extern char gszActiveSheetName[];
  426.  
  427. extern    XLOPER gxOutRef;
  428. extern    XLMREF gxlmOutRef;
  429. extern     XLOPER     gxInRef;
  430. extern    XLMREF    gxlmInRef;
  431.  
  432. // module specific names
  433. extern char gszLibName[];
  434. extern char gspShortLibName[];
  435. extern char gspLongLibName[];
  436. extern char gszErrorBuf[];
  437. extern char gspHelpId[];
  438. extern XLOPER gxHelpRef;
  439. extern LPXLOPER gpxHelpRef;
  440.  
  441. // CustomFit
  442. extern LPMULTI lpMultiCfit;
  443. extern XLOPER xMacroRef;
  444. extern char gspCFitMacroName;
  445.  
  446. #endif
  447.  
  448. /* ----------------<EXPORT function prototypes>------------------ */
  449.  
  450. BOOL PASCAL FAR _export LibMain( HANDLE, WORD, WORD, LPSTR);
  451. int PASCAL FAR _export WEP(BOOL);
  452.  
  453. void __export FAR PASCAL xlAutoFree(LPXLOPER lpMulti);
  454. LPXLOPER PASCAL FAR __export Diagonalize(LPFP lpHmat);
  455. LPXLOPER FAR PASCAL __export MODensity(LPFP Eivec, LPFP Occ);
  456. LPXLOPER PASCAL FAR __export PolyCurveFit(LPFP lpIndVar, LPFP lpDepVar,
  457.                                 unsigned int Order);
  458. LPXLOPER PASCAL FAR __export CubicSplines(LPFP lpIndVar, LPFP lpDepVar);
  459. LPXLOPER PASCAL FAR __export CalcSpline(LPFP lpXorig, LPFP lpCoef, LPFP lpXcalc);
  460. LPXLOPER PASCAL FAR __export SmoothSG(LPFP lpData, unsigned int wSmoothNum,
  461.                                 unsigned int wDerivNum);
  462. LPXLOPER PASCAL FAR __export SmoothWeights(LPFP lpData, LPFP lpWeights);
  463. LPXLOPER PASCAL FAR __export CustomFit(LPFP lpData, LPFP lpParms);
  464. int PASCAL FAR      __export fExit(VOID);
  465. int PASCAL FAR  __export fAbout(void);
  466.  
  467. #define _INC_XLMATH
  468. #endif
  469.